<template>
  <van-form @submit="onSubmit">
  <van-field
    v-model="username"
    name="用户名"
    label="用户名"
    placeholder="用户名"
    :rules="[{ required: true, message: '请填写用户名' }]"
  />
  <van-field
    v-model="password"
    type="password"
    name="密码"
    label="密码"
    placeholder="密码"
    :rules="[{ required: true, message: '请填写密码' }]"
  />
  <div style="margin: 16px;">
    <van-button round block type="info" native-type="submit">提交</van-button>
  </div>
</van-form>
</template>

<script>
import { mapActions } from 'vuex'
export default {
  name: 'Login',
  data() {
    return {
      username: '',
      password: '',
    }
  },
  methods: {
    ...mapActions(['login']),
    onSubmit(values) {
      // 调用 store 中的 action 方法，实现用户登录并保存数据
      // action 方法也是不能直接调用的， 需要使用 $storethis.$store.dispatch();来调用
      // 可以使用 vuex 中的辅助方法 mapActions 方法来使用
      // 调用 login 请求
      this.login(values)
        .then(data => {
          if (data) { // 登录成功，跳转页面
            // 构建登录成功后跳转的路径
            // 如果是在其他非 mine 的页面进入登录界面 那么登录完成后跳转到之前的页面
            const path = this.$route.params.to || '/mine'
            this.$router.push(path)
          }
        })
    },
  },
}
</script>

<style>

</style>
